package com.bookseek.xreader.dbhelper;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import com.bookseek.xreader.consts.XreaderConts;
import com.bookseek.xreader.dao.DaoMaster;

import org.greenrobot.greendao.database.Database;
import org.xml.sax.XMLReader;


public class DxmOpenHelper extends DaoMaster.OpenHelper {

    public DxmOpenHelper(Context context, String name) {
        super(context, name);
    }

    public DxmOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
        super(context, name, factory);
    }


    @Override
    public void onCreate(Database  db) {
        Log.i(XreaderConts.TAG,"==》on Create DB==========>");
        // 初始化数据库表（GreenDAO 自动生成的创建表逻辑）
        //@Entity 自动创建表
        DaoMaster.createAllTables(db,true);
        // 可添加初始化数据（如默认配置、基础字典等）
        initDefaultData(db);
        //初始化fts5
        initFtsTable(db);
    }

    @Override
    public void onUpgrade(Database db, int oldVersion, int newVersion) {
        Log.i(XreaderConts.TAG,"==》on onUpgrade DB==========>");
        // 核心：根据版本号差异执行增量升级，避免数据丢失
        // 例如：从版本1升级到版本2，新增表或修改字段
        if (oldVersion < 2) {
            // 执行版本2的升级逻辑（如创建新表、添加字段等）
            upgradeToVersion2(db);
        }
        if (oldVersion < 3) {
            // 执行版本3的升级逻辑
            upgradeToVersion3(db);
        }
        // ... 其他版本升级逻辑
    }

    // 示例：升级到版本2（新增一张表）
    private void upgradeToVersion2(Database db) {
        // 假设新增了 User 表，执行创建语句
        //db.execSQL("CREATE TABLE IF NOT EXISTS `User` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT)");

    }
    private void upgradeToVersion3(Database db) {

    }

    private void initFtsTable(Database db){
        try{
            DbSessionUtils.initBdocTable(db);
        }catch (Exception e){
            e.printStackTrace();
        }
        try{
            DbSessionUtils.initBookTable(db);
        }catch (Exception e){
            e.printStackTrace();
        }

    }
    // 示例：初始化默认数据
    private void initDefaultData(Database db) {
        // 向表中插入默认数据（如系统配置）
        //db.execSQL("INSERT INTO `Config` (`key`, `value`) VALUES ('version', '1.0')");
    }
}
